import ExcelJS from 'exceljs'

export interface ExportExcelConfig {
  sheetName?: string
  columns: Partial<ExcelJS.Column>[]
}

export abstract class ExcelUtil {
  /** 导出单张表 */
  static export(records: any[], config: ExportExcelConfig): Promise<ExcelJS.Buffer> {
    const { sheetName = 'Sheet1', columns = [] } = config
    // 创建工作簿和工作表
    const workbook = new ExcelJS.Workbook()
    const worksheet = workbook.addWorksheet(sheetName, { views: [{ state: 'frozen', ySplit: 1 }] })
    // 定义表头（根据实际字段调整）
    worksheet.columns = columns
    // 数据并添加到工作表
    worksheet.addRows(records)
    // 设置表头样式（可选）
    const headerRow = worksheet.getRow(1)
    headerRow.font = { bold: true }
    // 表格水平垂直居中
    for (let i = 1; i <= worksheet.rowCount; i++) worksheet.getRow(i).alignment = { vertical: 'middle', horizontal: 'center' }
    // 生成并返回Excel文件缓冲区
    return workbook.xlsx.writeBuffer()
  }
}
